/**
 * This is for handling a DNS for GaEngine
 * A handler responsible for creating, crossing and evaluating a DNS
 */
package com.axi.ga;

/**
 * @author Ákos Szabó - Axi - aaszabo@gmail.com
 * Dec 9, 2011
 *
 */public interface IDns 
 {
	/**
	 * This creates a DNS
	 * @return
	 */
	 public IDns getDns();
	 
	 /**
	  * Returns the fitness of the DNS
	  * @param argDns
	  * @return
	  */
	 public int getFitness();
	 
	
	 
	 /**
	  * Clones itself
	  * @return gives back a clone Dns
	  */
	 public IDns clone();
	 
	 
	 /**
	  * Change itself a bit
	  */
	 public void mutate();
	 
	 
	 /**
	  * 
	  * @param argDns
	  * @return 0 if equal; -1 if less; 1 if greater than the Dns in the argument
	  * 
	  */
	 public int compare(IDns argDns);
	 
	 public String toString();
	 
	 
 }
